<?php
/**
 * 文件函数库
 * tcc1988@163.com
 */
if (!defined('LEGAL_OPER')){ die('Hacking attempt');}
class FileUtil{
    /**递归创建目录 **/
	static function mkdirs($dir) {
		if(!is_dir($dir)) {
			if(!FileUtil::mkdirs(dirname($dir))){
				return false;
			} if(!mkdir($dir,0777)){
				return false;
			}
		}
		return true;
	}
	
	/**
	 * 按指定路径生成目录
	 * @param string $path 路径
	 */
	static function mkdirs2($path){
		$adir = explode('/',$path);
		$dirlist = '';
		$rootdir = array_shift($adir);
		if(($rootdir!='.'||$rootdir!='..')&&!file_exists($rootdir)){
			@mkdir($rootdir);
		}
		foreach($adir as $key=>$val){
			if($val!='.'&&$val!='..'){
				$dirlist .= "/".$val;
				$dirpath = $rootdir.$dirlist;
				if(!file_exists($dirpath)){
					@mkdir($dirpath);
					@chmod($dirpath,0777);
				}
			}
		}
	}
	
	
	
	
	/**删除文件  **/
	static function delete($path){
	    if(file_exists($path)){
	    	unlink($path);
	    	return true;
	    }else{
	    	return false;
	    }
	}
	/**　字符串保存到文件  **/
	static function save($path,$str=''){
		$dir = dirname($path);
		if(!file_exists($dir)){
			mkdir($dir);
		}
		touch($path);
		if($str != null && $str !=''){
			$fp = fopen($path, "w");
			fwrite($fp,$str);
			fclose($fp);
		}
		
	
	}
	/**　字符串追加到文件  **/
	static function save_append($path,$str=''){
		$dir = dirname($path);
		if(!file_exists($dir)){
			mkdir($dir);
		}
		touch($path);
		if($str != null && $str !=''){
			$fp = fopen($path, "a");
			fwrite($fp,$str);
			fclose($fp); 
		}
		
	}
	/**　获取文件内容  **/
	static function get($path){
		if(!file_exists($path)){return null;}
		return file_get_contents($path);
	}
	/**　用流的方式获取文件内容  **/
	static function stream_get($path){
		if(!file_exists($path)){return false;}
		$str = '';
		$fp=fopen($path,'r');
		while (!feof($fp)){
			$str.=fread($fp, 1024);//每次读出文件10分之1
		}
		fclose($fp);
		return $str;
	}
	/**　移动  **/
	static function move($filename,$sdir,$tdir='',$newfilename=''){
		if($tdir == null || $tdir == ''){
			$tdir = $sdir;
		}
		if($newfilename == null || $newfilename == ''){
			$newfilename = $filename;
		}
		
		if(!file_exists($sdir.$filename)){
			return false;
		}
		if(file_exists($tdir.$newfilename)){
			FileUtil::delete($tdir.$newfilename);
		}else{
			if(!file_exists($tdir)){
				mkdir($tdir);
			}
		}
		return rename($sdir.$filename,$tdir.$newfilename);
	}
	/**　拷贝 **/
	static function copy($filename,$sdir,$tdir){
		 if(!file_exists($sdir.$filename)){
	     	return false;
	     }
	     if(file_exists($tdir.$filename)){
	     	FileUtil::delete($tdir.$filename);
	     }else{
	     	if(!file_exists($tdir)){
	     		mkdir($tdir);
	     	}
	     }
	     return copy($sdir.$filename,$tdir.$filename);
	
	}
	/**　重命名  **/
	static function rename($dir,$sfilename,$tfilename){
	     if(!file_exists($dir.$sfilename)){
	     	return false;
	     }
	     if(file_exists($dir.$tfilename)){
	     	FileUtil::delete($dir.$tfilename);
	     }
	     return rename($dir.$sfilename,$dir.$tfilename);
	}
	
	/**　重命名  **/
	static function getTypeCode($filename){
		$file     = fopen($filename, "rb");
		$bin      = fread($file, 2); //只读2字节
		fclose($file);
		$strInfo  = @unpack("C2chars", $bin);
		$typeCode = intval($strInfo['chars1'].$strInfo['chars2']);
		return $typeCode;
	}
	
	

}
?>